package com.neko.Thread_Learning.t16_No_synchronized_Demo;

import java.util.ArrayList;

/**
 * 16-3、Thread 不安全 的 Collections - ArrayList
 * */
public class UnSafeList {
    public static void main(String[] args) {

        // 不安全 の List
        ArrayList<String> list = new ArrayList<String>();

        /**
         * 原因在 for，同一时间下，多线程 new Thread 操作了List的同一个位置
         *  以致于List 某几个位置，被覆写了
         * */
        for (int i=0; i<10000; i++) {
            new Thread( () -> {
                list.add(Thread.currentThread().getName());
            }).start();
        }

//        放大问题，如果加入了 Thread.sleep(2000) 还是数据错误，则证明代码有问题

//        try {
//            Thread.sleep(2000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

        System.out.println(list.size());
    }

}
